package com.bbs.server;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;

import com.alibaba.fastjson.JSON;
import com.bbs.beans.Submit;

import im.beans.User;
import manager.PersistentManager;


/**
 * 上拉加载更多帖子   传过去20条
 * @author Administrator
 *
 */
public class GetMoreTieZi extends HttpServlet {
		private static final long serialVersionUID = 1L;
	       
	    /**
	     * @see HttpServlet#HttpServlet()
	     */
	    public GetMoreTieZi() {
	        super();
	    }

		/**
		 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
		 */
		protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//			response.getWriter().append("Served at: ").append(request.getContextPath());
			String data = request.getParameter("data");
			Upload upload = JSON.parseObject(data,Upload.class);
		   
			Download download = new Download();
			
			SessionFactory sf = PersistentManager.sharemanager().getSessionFactory();
			Session session = sf.openSession();

			Transaction tx = session.beginTransaction();
			
			try{
				Query q = session.createQuery("from Submit s where s.user = ? and s.changeTime < ? order by s.changeTime desc");
				User tempU = new User();
				tempU.setId(Long.parseLong(upload.getUserId()));
				q.setParameter(0,tempU);
				String time=upload.getLastTime();
				q.setParameter(1,time);
				
				q.setMaxResults(20);
				download.setTies(q.list());
				
				tx.commit();
				download.setStatus(DownloadInfo.SUCCESS);
			}catch(Exception e)
			{
				download.setStatus(DownloadInfo.FAILED);
				tx.rollback();
				e.printStackTrace();
			}
			finally {
				session.close();
			}
			
			response.setCharacterEncoding("UTF-8");
			System.out.println(JSON.toJSONString(download));
			response.getWriter().append(JSON.toJSONString(download));
			
		}

		/**
		 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
		 */
		protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
			doGet(request, response);
		}

		// 上行数据
		public static class Upload 
		{
			// 用户id
			String userId;
			//当前显示的最后一条帖子的时间
			String lastTime;

			public String getUserId() {
				return userId;
			}
			public void setUserId(String userId) {
				this.userId = userId;
			}
			public String getLastTime(){
				return lastTime;
			}
			public void setLastTime(String time){
				this.lastTime=time;
			}
			
			
		}
		
		// 下行数据
		public static class Download
		{
			// 状态标记
			int status;
			
			// 我的所有帖子
			List<Submit> ties = new ArrayList<Submit>();

			public int getStatus() {
				return status;
			}

			public void setStatus(int status) {
				this.status = status;
			}

			public List<Submit> getTies() {
				return ties;
			}

			public void setTies(List<Submit> ties) {
				this.ties = ties;
			}
			
			
		}

}
